﻿ 

#include <iostream>


using namespace std;


/*
https://www.papamelon.com/problem/359


王国里有 N 个城市，从 1∼N 编号，1 号城市是首都。
一开始，王国里一条道路都没有。
国王给出了一个修路计划，该计划包含多条待修建的道路，每条道路的信息如下：
u v d c
一条双向道路，连接城市 u 和 v。
长度为 d。

修建这条路的花费是 c。
该修路计划保证，从首都出发，能到达任何城市。
但是该修路计划的花费太大了，我们仅能选择其中的某些道路进行修建，且不能擅自添加新道路。
放弃部分道路后，要满足以下两个条件：
从首都仍然可以到达其他任何城市
原修路计划中，从首都到每个城市，都有一个最短路径；新的修路计划中，我们要保证首都到每个城市的最短路径不变
为满足上面的要求，求最少的修建花费。

输入
多组测试数据
每组测试数据格式如下：
第一行两个整数 N(1≤N≤10000),M(0≤M≤20000)，表示城市数量和原计划中的道路数量
接下来 M 行，每行一条原计划中的道路信息，u,v,d,c(1≤u,v≤N,1≤d≤1000,1≤c≤1000)
最后以 N=0,M=0 结束
输出
每组数据输出一行，表示最少的修路花费
样例 1
输入
3 3
1 2 1 2
2 3 2 1
3 1 3 2
5 5
1 2 2 2
2 3 1 1
1 4 1 1
4 5 1 1
5 3 1 1
5 10
1 2 32 10
1 3 43 43
1 4 12 52
1 5 84 23
2 3 58 42
2 4 86 99
2 5 57 83
3 4 11 32
3 5 75 21
4 5 23 43
5 10
1 2 1 53
1 3 1 65
1 4 1 24
1 5 1 76
2 3 1 19
2 4 1 46
2 5 1 25
3 4 1 13
3 5 1 65
4 5 1 34
0 0
输出
3
5
137
218
*/




int main()
{
    std::cout << "Hello World!\n";
}

 